/**
 * aui-popup.js
 * @author 流浪男
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
(function(window, undefined) {
	"use strict";
	var auiPopup = function() {};
	var isShow = false;
	auiPopup.prototype = {
		init: function(params, callback) {
			this.frameBounces = params.frameBounces;
			this.location = params.location;
			this.buttons = params.buttons;
			this.maskDiv;
			this.popupDiv;
			var self = this;
			self.open(params, callback);
		},
		open: function(params, callback) {
			var buttonsHtml = '',
				locationClass = 'aui-popup-top';
			var self = this;
			if(self.popupDiv) {
				self.close();
				return;
			}
			if(!self.maskDiv) {
				self.maskDiv = document.createElement("div");
				self.maskDiv.className = "aui-mask";
				document.body.appendChild(self.maskDiv);
			}
			switch(self.location) {
				case "top":
					locationClass = 'aui-popup-top';
					break;
				case "top-left":
					locationClass = 'aui-popup-top-left';
					break;
				case "top-right":
					locationClass = 'aui-popup-top-right';
					break;
				case "bottom":
					locationClass = 'aui-popup-bottom';
					break;
				case "bottom-left":
					locationClass = 'aui-popup-bottom-left';
					break;
				case "bottom-right":
					locationClass = 'aui-popup-bottom-right';
					break;
				default:
					locationClass = 'aui-popup-top';
					break;
			}
			self.popupDiv = document.createElement("div");
			self.popupDiv.className = "aui-popup " + locationClass;
			self.popupDiv.innerHTML = '<div class="aui-popup-arrow"></div><div class="aui-popup-content"></div>';
			document.body.appendChild(self.popupDiv);
			if(self.buttons && self.buttons.length) {
				buttonsHtml += '<ul class="aui-list aui-list-noborder">';
				for(var i = 0; i < self.buttons.length; i++) {
					buttonsHtml += '<li class="aui-list-item aui-list-item-middle">';
					//                  buttonsHtml += '<div class="aui-list-item-label-icon"><img src="'+self.buttons[i].image+'"></div>';
					buttonsHtml += '<div class="aui-list-item-inner" style="justify-content: center;color: #ffffff;">' + self.buttons[i].text + '</div>';
					buttonsHtml += '</li>';
				}
				buttonsHtml += '</ul>';
			}
			document.querySelector(".aui-popup .aui-popup-content").insertAdjacentHTML('beforeend', buttonsHtml);
			var actionsheetHeight = document.querySelector(".aui-popup").offsetHeight;
			self.maskDiv.classList.add("aui-mask-in");
			self.popupDiv.classList.add("aui-popup-in");
			self.popupDiv.addEventListener("touchmove", function(event) {
				event.preventDefault();
			})
			self.maskDiv.addEventListener("touchmove", function(event) {
				event.preventDefault();
			})
			if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces) {
				api.setFrameAttr({
					bounces: false
				});
			}
			var popupButtons = document.querySelectorAll(".aui-popup .aui-list-item");
			if(popupButtons && popupButtons.length > 0) {
				setTimeout(function() {
					self.maskDiv.onclick = function() {
						self.close();
						return;
					};
					for(var ii = 0; ii < popupButtons.length; ii++) {
						(function(e) {
							popupButtons[e].onclick = function() {
								if(self.buttons[e].value) {
									var _value = self.buttons[e].value;
								} else {
									var _value = null;
								}
								if(callback) {
									callback({
										buttonIndex: e + 1,
										buttonTitle: this.textContent,
										buttonValue: _value
									});
								};
								self.close();
								return;
							}
						})(ii)
					}
				}, 350)
			}
		},
		close: function() {
			var self = this;
			if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces) {
				api.setFrameAttr({
					bounces: true
				});
			}
			if(self.popupDiv) {
				var actionsheetHeight = self.popupDiv.offsetHeight;
				self.popupDiv.classList.add("aui-popup-out");
				self.maskDiv.style.opacity = 0;
				setTimeout(function() {
					if(self.maskDiv) {
						self.maskDiv.parentNode.removeChild(self.maskDiv);
					}
					self.popupDiv.parentNode.removeChild(self.popupDiv);
					self.maskDiv = self.popupDiv = false;
				}, 300)
			}
		}
	};
	window.auiPopup = auiPopup;
})(window);